const http = require("http");
const url = require("url");
const fs = require("fs");
// 处理querystring的内置模块
const qs = require("querystring");

const server = http.createServer((req,res)=>{
    /* 
        req: request ，浏览器给服务器的内容
        res: response ,服务器给浏览器的内容
    
    */
    let urlObj = url.parse(req.url,true);

    console.log(url.parse);  // [Function: urlParse]
    // console.log(urlObj);   // Url对象

    let pathname = urlObj.pathname; // Url对象的属性
    if(pathname=="/"){
       let data =  fs.readFileSync("./views/index.html");
       res.write(data);
       res.end();
    }else if(pathname == "/postdata"){
        // get 和 post 都可以访问
        // 限定http方式 只限定了post方法可以访问，那么浏览器就访问不到了
         // 接收post过来的数据
        // 接收post数据，post数据通过流的形式接收
        // 监听 req的流数据
        let str = "";
        req.on("data",chunk=>{
            str += chunk;
        })

        req.on("end",()=>{
            console.log(str);
            let resObj =  qs.parse(str);    // 把字符串转换为对象
            console.log(resObj);
        })

        res.write("返还post的数据");
        res.end();
    }
})

server.listen(8989);




/* 
发送post数据 
    通过表单发送post数据 ，method=“post”
        默认的enctype是application/x-www-form-urlencoded，放在请求头部的content-type里
        数据会放在请求体里发送 且发送的形式是 qs ： name=zhangsan&age=20
        
node端接收post数据，通过监控流数据
    let str = ""
    req.on("data",chunk=>{
        str += chunk
    })
    req.on("end",()=>{
        console.log(str);
    })

    post有请求体，get请求体是空的
*/